freeslot("MT_LIGHTNING")
freeslot("S_LIGHTNING")
freeslot("SPR_LGHT")
mobjinfo[MT_LIGHTNING] = {
	spawnstate = S_LIGHTNING,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_none,
	reactiontime = 1,
	attacksound = sfx_none,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_none,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_NULL,
	xdeathstate = S_NULL,
	deathsound = sfx_none,
	speed = 10,
	radius = 16*FRACUNIT,
	height = 32*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_NOCLIP,
	raisestate = S_NULL
}

//
states[S_LIGHTNING] = {
	sprite = SPR_LGHT,
	frame = A|FF_ANIMATE|FF_TRANS80|FF_FULLBRIGHT,
	tics = 3,
	var1 = 2,
	var2 = 1,
	nextstate = S_NULL
}

freeslot("MT_NAIL")
freeslot("S_NAIL")
freeslot("SPR_NLPJ")
mobjinfo[MT_NAIL] = {
	spawnstate = S_NAIL,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_none,
	reactiontime = 1,
	attacksound = sfx_none,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_none,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_NULL,
	xdeathstate = S_NULL,
	deathsound = sfx_none,
	speed = 50*FU,
	radius = 16*FRACUNIT,
	height = 8*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_NOBLOCKMAP|MF_MISSILE|MF_NOGRAVITY,
	raisestate = S_NULL
}

//
states[S_NAIL] = {
	sprite = SPR_NLPJ,
	frame = A,
	tics = -1,
	nextstate = S_NULL
}

freeslot("sfx_plas2")
freeslot("MT_PLASMABALL")
freeslot("S_PLASMABALL")
freeslot("S_PLASMAXPLD")
freeslot("SPR_PLAS")
mobjinfo[MT_PLASMABALL] = {
	spawnstate = S_PLASMABALL,
	spawnhealth = 1000,
	seestate = S_NULL,
	seesound = sfx_none,
	reactiontime = 8,
	attacksound = sfx_none,
	painstate = S_NULL,
	painchance = 192*FRACUNIT,
	painsound = sfx_none,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_PLASMAXPLD,
	xdeathstate = S_NULL,
	deathsound = sfx_plas2,
	speed = 50*FRACUNIT,
	radius = 13*FRACUNIT,
	height = 8*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_NOBLOCKMAP|MF_MISSILE|MF_NOGRAVITY,
	raisestate = S_NULL
}

//
states[S_PLASMABALL] = {
	sprite = SPR_PLAS,
	frame = A|FF_FULLBRIGHT|FF_ANIMATE,
	var1 = 1,
	var2 = 6,
	tics = -1,
	nextstate = S_PLASMABALL
}

states[S_PLASMAXPLD] = {
	sprite = SPR_PLAS,
	frame = C|FF_FULLBRIGHT|FF_ANIMATE,
	var1 = 4,
	var2 = 4,
	tics = 20,
	nextstate = S_NULL
}

freeslot("MT_RMPROCKET")
freeslot("S_RMPROCKET")
freeslot("SPR_RMPR")
mobjinfo[MT_RMPROCKET] = {
	spawnstate = S_RMPROCKET,
	spawnhealth = 1000,
	seestate = S_NULL,
	seesound = sfx_brakrl,
	reactiontime = 8,
	attacksound = sfx_none,
	painstate = S_NULL,
	painchance = 192*FRACUNIT,
	painsound = sfx_none,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RINGEXPLODE,
	xdeathstate = S_NULL,
	deathsound = sfx_brakrx,
	speed = 40*FRACUNIT,
	radius = 11*FRACUNIT,
	height = 8*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_NOBLOCKMAP|MF_MISSILE|MF_NOGRAVITY,
	raisestate = S_NULL
}

//
states[S_RMPROCKET] = {
	sprite = SPR_RMPR,
	frame = A|FF_FULLBRIGHT,
	tics = -1,
	nextstate = S_RMPROCKET
}

freeslot("MT_SHOTGRENADE")
freeslot("S_SHOTGRENADE")
freeslot("SPR_GRND")
mobjinfo[MT_SHOTGRENADE] = {
	spawnstate = S_SHOTGRENADE,
	spawnhealth = 1000,
	seestate = S_NULL,
	seesound = sfx_brakrl,
	reactiontime = 8,
	attacksound = sfx_none,
	painstate = S_NULL,
	painchance = 192*FRACUNIT,
	//painchance = 240*FRACUNIT,
	painsound = sfx_none,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RINGEXPLODE,
	xdeathstate = S_NULL,
	deathsound = sfx_brakrx,
	speed = 30*FRACUNIT,
	radius = 11*FRACUNIT,
	height = 8*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_s3k5d,
	flags = MF_MISSILE|MF_BOUNCE|MF_GRENADEBOUNCE,
	raisestate = S_NULL
}

//
states[S_SHOTGRENADE] = {
	sprite = SPR_GRND,
	frame = A|FF_FULLBRIGHT,
	tics = -1,
	nextstate = S_SHOTGRENADE
}

//mobjinfo[MT_SHOTGRENADE].blastdamage = 192 //still deal same blast damage as rockets

freeslot("MT_THROWNFLAME")
freeslot("S_THROWNFLAME")

mobjinfo[MT_THROWNFLAME] = {
	spawnstate = S_THROWNFLAME,
	spawnhealth = 100,
	seestate = S_NULL,
	seesound = sfx_none,
	reactiontime = 1,
	attacksound = sfx_none,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_none,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_NULL,
	xdeathstate = S_NULL,
	deathsound = sfx_none,
	speed = 32*FU,
	radius = 16*FRACUNIT,
	height = 32*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_NOBLOCKMAP|MF_MISSILE|MF_NOGRAVITY,
	raisestate = S_NULL
}

//
states[S_THROWNFLAME] = {
	sprite = SPR_FLME,
	frame = A|FF_TRANS50|FF_ADD,
	tics = 20,
	nextstate = S_NULL
}

freeslot("MT_THROWNFLAME2")
freeslot("S_THROWNFLAME2")

mobjinfo[MT_THROWNFLAME2] = {
	spawnstate = S_THROWNFLAME2,
	spawnhealth = 100,
	seestate = S_NULL,
	seesound = sfx_none,
	reactiontime = 1,
	attacksound = sfx_none,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_none,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_NULL,
	xdeathstate = S_NULL,
	deathsound = sfx_none,
	speed = 48*FU,
	radius = 16*FRACUNIT,
	height = 32*FRACUNIT,
	dispoffset = 0,
	//mass = 100,
	mass = 25,
	damage = 0,
	activesound = sfx_None,
	flags = MF_NOBLOCKMAP|MF_MISSILE,
	raisestate = S_NULL
}

//
states[S_THROWNFLAME2] = {
	sprite = SPR_FLME,
	frame = A|FF_TRANS50|FF_ADD,
	//tics = 25,
	tics = -1,
	nextstate = S_NULL
}

freeslot("MT_KARABOLT")
freeslot("S_KARABOLT1", "S_KARABOLT2")
freeslot("SPR_KWBR")
mobjinfo[MT_KARABOLT] = {
	spawnstate = S_KARABOLT1,
	spawnhealth = 1000,
	seestate = S_NULL,
	seesound = sfx_bnce1,
	reactiontime = 8,
	attacksound = sfx_none,
	painstate = S_NULL,
	painchance = 24*FRACUNIT,
	painsound = sfx_none,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RINGEXPLODE,
	xdeathstate = S_RINGEXPLODE,
	deathsound = sfx_itemup,
	speed = 45*FRACUNIT,
	radius = 16*FRACUNIT,
	height = 24*FRACUNIT,
	dispoffset = 0,
	mass = 100, //stjr i will rain my ungodly hellfire upon you for making the MASS value used for damage types and then never documenting it anywhere
	damage = 0,
	activesound = sfx_bnce1,
	flags = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE,
	raisestate = S_NULL,
	//rocketforce = 1 //god damnnnnnnn itttt stjrrrrrrrrrrrrrr
}

mobjinfo[MT_KARABOLT].rocketforce = 5

//
states[S_KARABOLT1] = {
	sprite = SPR_KWBR,
	frame = A|FF_FULLBRIGHT,
	tics = 2,
	nextstate = S_KARABOLT2
}

states[S_KARABOLT2] = {
	sprite = SPR_KWBR,
	frame = B|FF_FULLBRIGHT,
	tics = 2,
	nextstate = S_KARABOLT1
}

freeslot("MT_RAILTRAIL")
freeslot("S_RAIL1", "S_RAIL2", "S_RAIL3", "S_RAIL4", "S_RAIL5", "S_RAIL6", "S_RAIL7", "S_RAIL8", "S_RAIL9", "S_RAIL0")
freeslot("SPR_RAIL")
mobjinfo[MT_RAILTRAIL] = {
	spawnstate = S_RAIL1,
	spawnhealth = 1000,
	seestate = S_NULL,
	seesound = sfx_RAIL1,
	reactiontime = 8,
	attacksound = sfx_none,
	painstate = S_NULL,
	painchance = 24*FRACUNIT,
	painsound = sfx_none,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_NULL,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 60*FRACUNIT,
	radius = 6*FRACUNIT,
	height = 4*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_RAIL1,
	flags = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPTHING,
	raisestate = S_NULL,
}

//
states[S_RAIL1] = {
	sprite = SPR_RAIL,
	frame = A|FF_FULLBRIGHT,
	tics = 1,
	nextstate = S_RAIL2
}

states[S_RAIL2] = {
	sprite = SPR_RAIL,
	frame = A|FF_FULLBRIGHT|FF_TRANS10,
	tics = 1,
	nextstate = S_RAIL3
}

states[S_RAIL3] = {
	sprite = SPR_RAIL,
	frame = B|FF_FULLBRIGHT|FF_TRANS20,
	tics = 1,
	nextstate = S_RAIL4
}

states[S_RAIL4] = {
	sprite = SPR_RAIL,
	frame = B|FF_FULLBRIGHT|FF_TRANS30,
	tics = 1,
	nextstate = S_RAIL5
}

states[S_RAIL5] = {
	sprite = SPR_RAIL,
	frame = C|FF_FULLBRIGHT|FF_TRANS40,
	tics = 1,
	nextstate = S_RAIL6
}

states[S_RAIL6] = {
	sprite = SPR_RAIL,
	frame = C|FF_FULLBRIGHT|FF_TRANS50,
	tics = 1,
	nextstate = S_RAIL7
}

states[S_RAIL7] = {
	sprite = SPR_RAIL,
	frame = D|FF_FULLBRIGHT|FF_TRANS60,
	tics = 1,
	nextstate = S_RAIL8
}

states[S_RAIL8] = {
	sprite = SPR_RAIL,
	frame = D|FF_FULLBRIGHT|FF_TRANS70,
	tics = 1,
	nextstate = S_RAIL9
}

states[S_RAIL9] = {
	sprite = SPR_RAIL,
	frame = E|FF_FULLBRIGHT|FF_TRANS80,
	tics = 1,
	nextstate = S_RAIL0
}

states[S_RAIL0] = {
	sprite = SPR_RAIL,
	frame = E|FF_FULLBRIGHT|FF_TRANS90,
	tics = 1,
	nextstate = S_NULL
}

freeslot("MT_TRACER")
freeslot("S_TRAC")
mobjinfo[MT_TRACER] = {
	spawnstate = S_TRAC,
	spawnhealth = 1000,
	seestate = S_NULL,
	seesound = sfx_TRAC1,
	reactiontime = 8,
	attacksound = sfx_none,
	painstate = S_NULL,
	painchance = 24*FRACUNIT,
	painsound = sfx_none,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_NULL,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 60*FRACUNIT,
	radius = 6*FRACUNIT,
	height = 4*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_null,
	flags = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPTHING|MF_SCENERY,
	raisestate = S_NULL,
}

//

states[S_TRAC] = {
	sprite = SPR_RAIL,
	frame = C|FF_FULLBRIGHT|FF_TRANS50,
	tics = 3,
	nextstate = S_NULL
}

addHook("MobjSpawn", function(mo)
	mo.color = SKINCOLOR_YELLOW
end, MT_TRACER)

//

addHook("TouchSpecial", function(s, t)
	//t.burning = min($ + 5, 70)
	return true
end, MT_THROWNFLAME)

/*
freeslot("MT_BOMB2")
freeslot("S_BOMB2")
freeslot("SPR_BOM2")
mobjinfo[MT_BOMB2] = {
	spawnstate = S_BOMB2,
	spawnhealth = 1000,
	seestate = S_NULL,
	seesound = sfx_bnce1,
	reactiontime = 8,
	attacksound = sfx_none,
	painstate = S_NULL,
	painchance = 24*FRACUNIT,
	painsound = sfx_none,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RINGEXPLODE,
	xdeathstate = S_RINGEXPLODE,
	deathsound = sfx_itemup,
	speed = 60*FRACUNIT,
	radius = 16*FRACUNIT,
	height = 24*FRACUNIT,
	dispoffset = 0,
	mass = 100, //stjr i will rain my ungodly hellfire upon you for making the MASS value used for damage types and then never documenting it anywhere
	damage = 0,
	activesound = sfx_bnce1,
	flags = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE|MF_BOUNCE|MF_GRENADEBOUNCE,
	raisestate = S_NULL,
	//rocketforce = 1 //god damnnnnnnn itttt stjrrrrrrrrrrrrrr
}

//mobjinfo[MT_KARABOLT].rocketforce = 5

states[S_KARABOLT1] = {
	sprite = SPR_KWBR,
	frame = A|FF_FULLBRIGHT,
	tics = 2,
	nextstate = S_KARABOLT2
}
*/

RFW.DAMAGETABLE[MT_NAIL] = {9, 9}
RFW.DAMAGETABLE[MT_KARABOLT] = {20, 25}
RFW.DAMAGETABLE[MT_PLASMABALL] = {5, 40}
RFW.DAMAGETABLE[MT_RMPROCKET] = {20, 20}
RFW.DAMAGETABLE[MT_SHOTGRENADE] = {20, 20}
RFW.DAMAGETABLE[MT_THROWNFLAME] = {5, 5}
RFW.DAMAGETABLE[MT_THROWNFLAME2] = {7, 7}

freeslot("MT_BITCH")
freeslot("S_BITCH")
freeslot("SPR_BTCH")
mobjinfo[MT_BITCH] = {
	//$Name "*The Bitch*"
	//$Sprite BTCHA0
	//$Category "Biohazard Containment Folder (DO NOT OPEN!!!)"
	doomednum = 67, //SIX SEVEN PHONK MANGOS MODE
	spawnstate = S_BITCH,
	spawnhealth = 9999,
	seestate = S_BITCH,
	seesound = sfx_none,
	reactiontime = 1,
	attacksound = sfx_none,
	painstate = S_BITCH,
	painchance = 8192,
	painsound = sfx_none,
	meleestate = S_BITCH,
	missilestate = S_BITCH,
	deathstate = S_BITCH,
	xdeathstate = S_BITCH,
	deathsound = sfx_none,
	speed = 10,
	radius = 15*FRACUNIT,
	height = 31*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_NOCLIP|MF_SCENERY|MF_SOLID,
	raisestate = S_NULL
}

states[S_BITCH] = {
	sprite = SPR_BTCH,
	frame = A|FF_FULLBRIGHT,
	tics = -1,
	nextstate = S_BITCH
}

addHook("MobjThinker", function(mo)
	if not mo.spawnpoint then return end
	if mo.spawnpoint.args[0] == 1 then
		mo.frame = 1
	elseif mo.spawnpoint.args[0] == 2
		mo.frame = 2
	end
end, MT_BITCH)